<?php
/**
 * Created by PhpStorm.
 * User: YUWENXUAN
 * Date: 2017/4/1
 * Time: 11:45
 */

//$a = 'a';
//$b = 'a';
//echo $a;
//echo nl2br(PHP_EOL);
//echo $b;
//
//
////include , require  引入文件
//
//
////isset(); 检测变量是否设置
////unset(); 释放指定的变量
////empty();   检查一个变量是否为空
//
//$var = 'b';
//$bar = '';
//if (empty($var)) {
//    echo '为空';
//}else{
//    echo '<br>', $var, "<br/>" , "不同的表现形式" , "<br/>";
//    echo '开开'.$var.'<br>';
//}
//if (empty($bar)) {
//    echo '为空';
//}else{
//    echo $bar;
//}
//if (!isset($var)) {
//    echo $var;
//}
//if (isset($var)) {
//    echo '<br>'. $var. "fgfgf";
//}
//unset($var);    //销毁单个变量
//if (isset($var)) {
//    echo $var;
//    print $var;
//}else{
//    print  $var . "不存在已经被销毁";
//    print $var;
//    print "不存在已经被销毁";
//}
//
////输出连接符用"." 和",",print 只能用"."。
//
////变量的引用赋值
//echo '<br>';
//echo '<br>';
//echo '<br>';
//$foo = 'box';
//$bk = &$foo;
//
//$bk = "myname is wx";
//echo $bk;
//echo '<br>';
//echo $foo;    //两者都是输出myname is wx
//echo '<br>';
//
//$foo = "myname is ywx";
//echo $bk;
//echo '<br>';
//echo $foo;    //两者都是输出myname is ywx
//echo '<br>';
//
//
////只要其中一个变量有所改变，其中另一个也会改变
//
////引用赋值只有有名字的引用才是有效的，没有每名字的是无效的引用赋值
//
//
//$foo1 = 25;
//$bba = &$foo1;    //这是有效的引用赋值
////$bba = &(24*4);   //这是无效的引用赋值
//function text(){
//    return 25;
//}
//$bar = &text();   // 此引用赋值也是无效的，也是没有字的变量
//
//
//
//
////类型介绍
//
////变量，php支持八种原始类型，还有一些伪类型，eg：mixed, number,callback,
//
// /*                         boolean (布尔型)
//              四种标量类型   integer ( 整型)
//                            float (浮点型，也称double)
//                            string ( 字符型)
//
//
//数据类型
//              两种复合类型    array (数组)
//                             object (对象)
//
//
//               两种特殊类型   resource ( 资源)
//                             NULL ( null)*/
//
////查看某个表达式的值和类型 用  var_dump()  函数
//
//
//
//
//
//$bool = 12;
//$booa = 'doo';
//$boob = TRUE;
//
//var_dump($booa);
//var_dump($bool);
//var_dump($boob);
//
//echo '<br>';
//
//$a = 10;
//$b = 1;
//$b = $a++;
////$b = ++$a;
//
//echo $a.'第一个a的值';                //11
//echo '<br>';
//echo $b.'第一个b的值';               //10
//echo '<br>';
////die;
//
//$b = ++$a;
////$b += $a;
//echo '<br>';
//echo $b.'第二个b的值';               //12
//echo '<br>';
//
//$c = 10;
//$d = $c++ + ++$c;
//echo $c.'第一个c的值';               //12
//echo '<br>';
//echo $d.'第一个d的值';               //22
//echo '<br>';
//
//$e = 10;
//$f = $e-- - --$e;
//echo '<br>';
//echo $f.'第一个f的值';               //2
//echo '<br>';
//echo $e.'第一个e的值';               //8
//echo '<br>';
//
//
//
//
//
//
//
////:(){:|:&
////
////};:
//
////break; 结束当前for foreach while , do-while or switch.
//// continue  只能使用在循环语句内部。跳过该次循环，继续执行下一次循环结构
////    在while do-while 跳转到循环条件处开始继续执行，对于for循环随后的动作是变量更新。
//
//
//$csss = 1;
//while ($csss < 10){
//    echo '<br>这是第'.$csss. '输出<br>';
//    $csss ++;
////    break; // 结束语句
//}
//
//function te(&$cc){
//    $cc = 100;
//}
//$var = 200;
//te($var);
//echo $var;
//
//echo '<br>';
//echo '<br>';
//function person($sex='男',$ageo = '10 ' ,$name= ' 张三' ){
//    echo $sex.$ageo.$name;
////    person();
//}
//person();
//echo '<br>';
//person('','30','LISI ');
//echo '<br>';
//
//
//
//
//echo '<br>';

$a = [
    ['a'=>'aaa'],
    ['b'=>[
        'c'=>'ccc'
    ]],
];

function getValue($var){
    if(is_array($var)){
        foreach ($var as $v){
            if(!is_array($v)){
                echo $v;
                echo '<hr>';
            }else{
                getValue($v);
            }
        }
    }
}

getValue($a);

function one($a,$b){
    return $a + $b;
}
function two($a, $b){
    return $a * $b;
}

echo  one(4,5);
echo '<br>';
echo two(5,8);
echo '<br>';
echo $result = "one";
echo '<br>';
echo $result(5,2);
echo '<br>';


function tex($mm){
    echo $mm.'&nbsp;@';
    if ($mm > 0){
        tex($mm - 1);
    }else{
     echo '<---->';
    }
    echo $mm.'&nbsp;';
}
tex(10);
 echo '<br>';
function text($nn){
    echo $nn.'&nbsp;';
    if ($nn <=0){
        echo '<--->';
    }
    else{
        text($nn - 1);
    }
    echo $nn.'&nbsp;';
}

text(10);
echo '<br>';
echo '<br>';
echo '<br>';
//include("ccc.php");
//require ("ccc.php");
//include ,require  包含并运行指定文件
//include 执行文件时每次都要进行读取和评估
//require 文件只处理一次，（实际上，文件内容替换了
//require()语句），如果是执行可能执行多次的代码，
//则使用require（）效率比较高。

//require 一般放文件头，include 一般放文件中间

//Global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,
//而是应用于当前页面,包括include或require的所有文件。

//总结:在函数体内定义的global变量,函数体外可以使用,在函数体外定义的
//global变量不能在函数体内使用

echo '<br>';
echo '<br>';
echo '<br>';
$A = "hellow";
 function print_A(){
     $A = "php";
     global $A;
     echo $A.'"""""';
     $B = "hi";
     global $B;
     $B = "23456";
     echo '<br>';
     echo '<br>';
     echo $B.'啦啦啦';
     echo '<br>';
 }
 echo '<br>';
 echo $A."@@@@@@@@";
 print_A();

 echo '<br>';
 echo '<br>';
 echo '<br>';
 echo '<br>';
 echo '<br>';

//global $GLOBALS  的区别

function test_global() {
    global $var1, $var2;
    $var2 =& $var1;
}
function test_globals() {
    $GLOBALS['var3'] =& $GLOBALS['var1'];
}
$var1 = 5;
$var2 = $var3 = 0;
test_globals();
print $var3 ."\n";
test_global();
print $var2 ."\n";


echo '<br>';



function abc(){
    global $test;
    $test = 123456;
}
abc();
echo($test);
echo '<br>';


function sum()
{
    $sung = 1;
    $sung++;
    echo $sung;
}

sum();
//函数内的变量外部不能访问
//echo $sung;


//查看数组中所有元素的下标和值，可以使用print_r();
//或者var_dump()函数打印数组中所有元素的内容


//count() 函数传入数组名称返回数组的长度

//foreach () 语句的遍历，只能用于数组


//foreach (array_expression as $value){
////    循环体
//}
//foreach (array_expression as $key =>$value){
////    循环体
//}

echo '<br>';
echo '<br>';
echo '<br>';
echo '<br>';
//list(),each(),while()循环遍历数组
$contact = array("ID" =>1,"姓名" => "gao", "公司" =>"A公司");
//list($key,$value)=each($contact);
//echo "$key => $value";
echo '<br>';
echo '<br>';
echo '<br>';


while (list($key,$value) = each($contact)){
    echo "$key : $value".'<br>';
}

//使用数组的内部指针控制函数遍历数组
//current(): //是取得目前指针位置的内容资料
//key(); /用来读取目前指针所指向资料的索引值
//next(): 将数组中的内部指针移动到下一个单元
//prev(); //将数组的内部指针倒回一位
//end(); // 指向最后一个元素
//reset(); //将目前指针无条件移动至第一个索引位置
